iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 24
0

接下來將要將介紹在kubernetes叢集中操作資源api的客戶端,透過client-go來實現對k8s資源的新增、修改、刪除和查詢等操作。

client-go

client-go是一個調用k8s叢集資源API的客戶端,通過client-go可以對deployment、service、ingress、replicaSet、pod、namespace、node等進行操作。

client-go的連結: https://github.com/kubernetes/client-go

取得client-go

go get k8s.io/client-go@v0.19.2
  • 安裝client-go時,請先查看一下k8s版本,針對k8s版本來安裝client-go版本

初始化k8s設定值

    config, err := clientcmd.BuildConfigFromFlags("", kubeconfig)
    ...
    
    clientset, err = kubernetes.NewForConfig(config)
    ...
  • 取得kubernetes的設定路徑$HOME/.kube/config
  • 通過*restclient.Config來取得clientset,每個版本使用方法可能會有差異

Clientset

var c *kubernetes.Clientset
var pod *v1.Pod
ctx := context.Background()

//建立pod
pod, err := c.CoreV1().Pods(<namespace>).Create(ctx, <pod>, metav1.CreateOptions{})
// 更新pod
pod, err := c.CoreV1().Pods(<namespace>).Update(ctx, <pod>, metav1.UpdateOptions{})
// 删除pod
err := c.CoreV1().Pods(<namespace>).Delete(ctx, <pod.Name>, metav1.DeleteOptions{})
// 查询pod
pod, err := c.CoreV1().Pods(<namespace>).Get(ctx, <pod.Name>, metav1.GetOptions{})
// 列出pod
podList, err := c.CoreV1().Pods(<namespace>).List(ctx, metav1.ListOptions{})
// watch pod
podWatch, err := c.CoreV1().Pods(<namespace>).Watch(ctx, metav1.ListOptions{})
}
  • 通過clientset可以調用pod的資源,例如create、update、get、list等方法
  • Pods()方法中如果不指定namespace,則會取得叢集中所有pod的列表

有關client-go可以對k8s資源api的調用,都和pod使用方式也都大同小異,這裡就不再列出。


上一篇
Day23 k8s監控 (1)
下一篇
Day25 k8s監控 (3)
系列文
微服務系統建置與監控30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言